/**
 *
 */
package com.xscj.dao;

import java.util.List;

import com.xscj.domain.SimpleStudent;
import com.xscj.domain.Student;
import com.xscj.domain.SubStudent;

/**
 * @author leorain
 */
public interface StuDao {
    /**
     * 得到学生总人数底层实现代码
     */

     int getStuCount();

    /**
     * 添加第一条学生信息底层实现代码
     */
     int addStuToDb(int id, Student student);

    /**
     * 添加一条新的学生信息底层实现代码
     */
     int addStuToDb(Student student);

    /**
     * 分页查询底层实现代码
     */
     List<SimpleStudent> queryByPage(int pageSize, int pageNow);

    /**
     * @author leorain
     * <p>
     * 得到有效的学生总人数
     */

     int getValidStuCount();

    /**
     * @author leorain
     * 模拟删除 设置删除标志
     */

     void deleteStuByXueHao(int xuehao);

    /**
     * @author leorain
     * 根据班级编号获得这个班级所有学生的学号以及姓名
     */
     List<SubStudent> getAllSubStudentsByGradeID(String gradeID);


    /**
     * @author leorain
     * @param gradeID
     * @return
     * 根据班级编号获取这个班级所有学生的数量
     */
     int getAllSubStudentsCountByGradeID(String gradeID);

    /**
     * @author leorain
     * 根据学生学号查询这个学生的姓名
     */
     SubStudent getSubStudentByXueHao(int stuXueHao);

    /**
     * @return 返回某次考试某门课程所有成绩未记录的学生集合
     * @author leorain
     * @param班级编号
     * @param学期
     * @param考试类型
     * @param课程编号
     */
     List<SubStudent> getAllSubStudentsByGXTC(String gradeID, int xueqi, String examType, String courseID);

    /**
     * @param 学生学号
     * @return 学生的个人基本信息
     * @author leorain
     */
     Student getStudent(int xuehao);

    /**
     * @author leorain
     * @param学号
     * @param学生信息
     * @return更新学生信息
     */
     void updateStuInfo(int xuehao, Student student);

    /**
     * @author leorain
     * @param学生学号
     * @return学生简单的个人信息
     */
     SimpleStudent querySimpleStudent(int stuXueHao);

    /**
     * @author leorain
     * @param班级编号
     * @return返回某个班级的所有学生集合
     */
     List<SimpleStudent> querySimpleStudents(String gradeID);

    /**
     * @author leorain
     * @return判断学生是否存在
     */
     int isExisits(int stuXueHao);

    /**
     * @author leorain
     * @return判断某个班级是否有学生存在
     */
     int isExisits(String gradeID);

    /**
     * @author leorain
     */
     int isExisits(int stuXueHao, String password);

     void updatePass(int stuXueHao, String password);

}
